home *** CD-ROM | disk | FTP | other *** search
- TITL ' TMS7041 SCRAMBLER AND DESCRAMBLER CODE '
- IDT 'SCRAM'
- OPTION XREF,TUNLST
- ************************************************************
- ** This code include the dibit scrambler and descrambler **
- ** code for the modem **
- ** **
- ** Written by Peter Ehlig **
- ** **
- ** Revision 1.0 11/12/85 PETER EHLIG **
- ** Revision 1.1 1/29/86 PETER EHLIG **
- ** Revision 1.1 5/20/86 PETER EHLIG **
- ** **
- ** COPYRIGHT TEXAS INSTRUMENTS 07/25/86 **
- ** **
- ************************************************************
- *
- * DEFINITIONS AND REFERENCES
- DEF SCRAM,DSCRAM
- REF PRINT,RUNHSA
- PAGE
- COPY DTE2.EQU
- *******----------------------------------------*******
- ***** Receiver descrambler *****
- ***** X(N) = Y(N-17) XOR Y(N-14) XOR Y(N) *****
- *******----------------------------------------*******
- DSCRAM EQU $
- *
- MOV XDIBIT,B ; SAVE SCRAMBLED DIBIT
- CLR YN14 ; CLEAR THE Y(N-14) REFERENCE
- CLR YN17 ; CLEAR THE Y(N-17) REFERENCE
- MOV D1718,A ; GET THE DESCRAMBLER HISTORY
- RL A ; SHIFT OUT Y(N-18)
- RLC A ; GET HISTORY Y(N-17)
- RLC YN17 ; AND PUT INTO REFERENCE
- RLC A ; SHIFT OFF TWO MORE BITS
- RLC YN17 ; SAVE Y(N-16) REFERENCE
- RLC A ; TO GET TO THE Y(N-14)
- RLC A ; AND GET HISTORY
- RLC YN14 ; AND PUT INTO REFERENCE
- RLC A ; GET HISTORY Y(N-13)
- RLC YN14 ; AND PUT INTO REFERENCE
- XOR YN14,XDIBIT ; XDIBIT=X(N) XOR Y(N-14)
- XOR YN17,XDIBIT ;XDIBIT=X(N)XORY(N-14)XORY(N-17)
- CLRC ; CLEAR OUT THE CARRY BIT
- RRC XDIBIT ; REVERSE THE DIBITS FOR
- JNC OVRSW1 ; ALLIGNMENT WITH SCRAMBLER
- OR %2,XDIBIT ; IF CARRY THEN BIT HIGH
- OVRSW1 EQU $
- *
- RLC D1TO8 ; SHIFT UP THE LSB HISTORY BITS
- RLC D9TO16 ; AND CARRY TO CSB HISTORY BITS
- RLC D1718 ; AND CARRY TO MSB HISTORY BITS
- CLRC ; CLEAR THE CARRY BIT
- RLC D1TO8 ; SHIFT UP THE LSB HISTORY BITS
- RLC D9TO16 ; AND CARRY TO CSB HISTORY BITS
- RLC D1718 ; AND CARRY TO MSB HISTORY BITS
- RRC B ; GET DIBIT0 AND
- RRC D1TO8 ; AND SHIFT IT INTO R13
- RRC B ; GET DIBIT0 AND
- RRC D1TO8 ; AND SHIFT IT INTO R13
- * If 8+2 (old+current) marks are received,set carrier detect
- *
- BTJO %BIT0,SWSTAT,CDSET ; Check if CD set
- CMP %3,XDIBIT ; Is XDIBIT= '11'
- JNZ NOT11 ; If not reset counter
- INC SCROUT ; Else, increment count of '11's
- BTJO %BIT5,SCROUT,SETCD ; Set CD If count = limit
- OR %3,XDIBIT ; Force DATA to '11'
- BR @CDSET ;
- NOT11 CLR SCROUT ; Reset counter
- OR %3,XDIBIT ; FORCE OUTPUT TO '11'
- BR @CDSET ; RETURN
- *
- **** When first detecting carrier will miss two 320 cycle
- *
- SETCD OR %BIT0,SWSTAT ; Else set CD
- MOV %>00,SCROUT ; Reset SCROUT for next time
- BTJO %BIT2,SWSTAT,IB212C ;If ORG, skip CMND to 320
- MOVP %>3F,DDDR ; Setup DPORT for output
- MOVP %>00,DPORT ; Reset 212 ANS mode modem
- ANDP %NOT6,BPORT ; Latch data into xmt.buffer
- ORP %BIT6,BPORT ; and reset RACK
- MOVP %>00,DDDR ; TURN DPORT IN
- IB212B BTJOP %BIT6,DPORT,IB212B ; CHECK 320 RESPONSE AND
- MOVP %>3F,DDDR ; Setup DPORT for output
- MOVP %>30,DPORT ; Issue CMND to run modem
- ANDP %NOT6,BPORT ; Latch data into xmt.buffer
- ORP %BIT6,BPORT ; and reset RACK
- MOVP %>00,DDDR ; TURN DPORT IN
- IB212C BTJOP %BIT6,DPORT,IB212C ; Wait FOR 320 read new CMND
- MOVD %RUNHSA,MSGL ; Acknowledge hookup
- CALL @PRINT ; by message to DTE
- *
- CDSET RETS
- *
- PAGE
- *******----------------------------------------*******
- ***** Transmitter Scrambler *****
- ***** Y(N) = Y(N-17) XOR Y(N-14) XOR X(N) *****
- *******----------------------------------------*******
- SCRAM EQU $
- CLRC ; CLEAR OUT THE CARRY BIT
- RRC XDIBIT ; REVERSE THE DIBITS FOR
- JNC OVRSW2 ; ALLIGNMENT WITH SCRAMBLER
- OR %2,XDIBIT ; IF CARRY THEN BIT HIGH
- OVRSW2 EQU $
- CLR YN14 ; CLEAR THE Y(N-14) REFERENCE
- CLR YN17 ; CLEAR THE Y(N-17) REFERENCE
- MOV S1718,A ; GET THE SCRAMBLER HISTORY
- RL A ; SHIFT OUT Y(N-18)
- RLC A ; GET HISTORY Y(N-17)
- RLC YN17 ; AND PUT INTO REFERENCE
- RLC A ; SHIFT OFF TWO MORE BITS
- RLC YN17 ; SAVE Y(N-16) REFERENCE
- RLC A ; TO GET TO THE Y(N-14)
- RLC A ; AND GET HISTORY
- RLC YN14 ; AND PUT INTO REFERENCE
- RLC A ; GET HISTORY Y(N-13)
- RLC YN14 ; AND PUT INTO REFERENCE
- XOR YN14,XDIBIT ; XDIBIT=X(N) XOR Y(N-14)
- XOR YN17,XDIBIT ;XDIBIT=X(N)XORY(N-14)XORY(N-17)
- *
- MOV XDIBIT,B ; HOLD SCRAMBLED DIBIT FOR HISTORY
- RLC S1TO8 ; SHIFT UP THE LSB HISTORY BITS
- RLC S9TO16 ; AND CARRY TO CSB HISTORY BITS
- RLC S1718 ; AND CARRY TO MSB HISTORY BITS
- CLRC ; CLEAR CARRY BIT
- RLC S1TO8 ; SHIFT UP THE LSB HISTORY BITS
- RLC S9TO16 ; AND CARRY TO CSB HISTORY BITS
- RLC S1718 ; AND CARRY TO MSB HISTORY BITS
- RRC B ; GET DIBIT0 AND
- RRC S1TO8 ; AND SHIFT IT INTO R20
- RRC B ; GET DIBIT0 AND
- RRC S1TO8 ; AND SHIFT IT INTO R20
- *
- RETS
- *
- END